export default {
    //挺多文件存在相同代码，于是我将其抽取出来，写在了这里，但写成了异步方式，我应该像session.js一样写成普通函数的，懒得改了

    //一般用于删除按钮的确认操作，需传vue的this
    async ifDeleteConfirm(_this) {
        return new Promise((resolve) => {
            _this.$confirm('确认删除吗, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                resolve(true);
            }).catch(() => {
                resolve(false);
            });
        })
    },
    //用于路由跳转，实际上本来就很短了，我还封装个锤子
    routePush(_this, url, query) {
        _this.$router.push({
            path: url, /*给vue组件传递参数，并跳转*/
            query //vue页面接受的参数, 通过$router.query.id/..接受
        });
    },
    //一般用于修改、增加、删除后的提示和跳转
    afterUpdateActions(_this, flag, msg, url, type) {
        const message = {
            //根据不同结果输出msg
            type: flag ? 'success' : 'error',
            message: flag ? msg + '成功' : msg + '失败'
        };
        _this.$message(message);
        clearTimeout(_this.timer);
        //定时器
        _this.timer = setTimeout(() => {
            if (type) //一种是跳转
                //这个this别搞,这是上面那个方法
                this.routePush(_this, url, null);
            else //刷新当前页面
                window.location.reload();
        }, 1000);
    },

    dateFormat(date) {
        let fmt = 'YYYY-mm-dd HH:MM';
        let ret;
        const opt = {
            "Y+": date.getFullYear().toString(),        // 年
            "m+": (date.getMonth() + 1).toString(),     // 月
            "d+": date.getDate().toString(),            // 日
            "H+": date.getHours().toString(),           // 时
            "M+": date.getMinutes().toString(),         // 分
            "S+": date.getSeconds().toString()          // 秒
            // 有其他格式化字符需求可以继续添加，必须转化成字符串
        };
        for (let k in opt) {
            ret = new RegExp("(" + k + ")").exec(fmt);
            if (ret) {
                fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
            }
        }
        return fmt;
    }
}
